package XMFramework.Interface
{
	import XMFramework.Interface.Architechture.SMController;
	import XMFramework.Interface.Architechture.SMModel;
	import XMFramework.Interface.Architechture.SMView;
	
	import flash.display.Stage;

	public interface IFramework
	{
		function get networkSystem() : INetwork;
		
		function get resourceManager() : IResourcesManager;
		
		function get runtimeUpdater() : IRuntimeUpdater;
		
		function get globalHolder() : IGlobalHolder;
		
		function get configData() : IConfig;
		
		function get timer() : ITimer;
		
		function get localizer() : ILocalization;
		
		function get soundFX() : ISoundFX;
		
		function get eventDispatcher():IEventDispatcher;
		
		function getArchCommand( archName : String ) : SMController;
		
		function getArchModel( archName : String ) : SMModel;
		
		function getArchView( archName : String ) : SMView;
		
		function registerArchitechture( ownerModule : IModule, archName : String, command : SMController, model : SMModel, view : SMView ) : void;
		
		function toggleView( name : String ) : SMView;
		
		function showView( name : String ) : SMView;
		
		function hideView( name : String ) : SMView;
		
		function viewHitTestPoint( x:int, y:int ) : Boolean;
		
		function invalidate() : void;
		
		function broadcasting( target : Array, channelId : String, ...param ) : void;
		
		function getStage():Stage;
		
		function isInitCompleted() : Boolean;

	}
}